﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Core;
using System.Data.SqlClient;
namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsTd_ModeloDAO
    {
        private AutomotrizEntities ContextoDeObjs = new AutomotrizEntities();



        public List<TD_MODELO> Listar_filtro_S()
        {

            List<TD_MODELO> lista = new List<TD_MODELO>();
            try
            {
                var q = (from m in ContextoDeObjs.TD_MODELO
                         where m.IND_VISUALIZAR== "S"
                         orderby m.DES_MODELO ascending
                         select m).Take(100) ;

                lista = q.ToList();

            }
            catch (Exception)
            {
            }
            return lista;
        }
        public List<TD_MODELO> Listar_filtro_N()
        {

            List<TD_MODELO> lista = new List<TD_MODELO>();
            try
            {
                var q = (from m in ContextoDeObjs.TD_MODELO
                         where m.IND_VISUALIZAR!= "S"
                         select m).Take(100);

                lista = q.ToList();

            }
            catch (Exception)
            {
            }
            return lista;
        }



        public List<TD_MODELO> listar_filtro_like(string des_modelo,string des_marca) {

            List<TD_MODELO> lista = new List<TD_MODELO>();
            try
            {
                var q = (from m in ContextoDeObjs.TD_MODELO                                              
                         where  m.DES_MODELO.Contains(des_modelo)
                         where m.DES_MARCA == des_marca
                         where m.IND_VISUALIZAR!= "S"   
                         select m).Take(100);
                lista = q.ToList();

            }
            catch (Exception)
            {
            }
            return lista;
        
        
        }

        public bool Actualizar_Estado_S(int ID_MODELO)
        {
            try
            {

                ContextoDeObjs.ExecuteStoreCommand("update TD_MODELO set IND_VISUALIZAR='S' WHERE ID_MODELO=" + ID_MODELO);
                return true;
            }
            catch (SqlException ex)
            {


                Globales.msjSql = ex.Message;

                return false;
            }



            catch (Exception)
            {
                return false;
            }


        }




        public bool Actualizar_Manual(string des_manual,int ID_MODELO)
        {
            try
            {

                ContextoDeObjs.ExecuteStoreCommand("update TD_MODELO set DES_MANUAL='" + des_manual + "' WHERE ID_MODELO=" + ID_MODELO);
                return true;
            }
            catch (SqlException ex)
            {


                Globales.msjSql = ex.Message;

                return false;
            }



            catch (Exception)
            {
                return false;
            }


        }



        public bool Actualizar_Estado_N(int ID_MODELO)
        {
            try
            {
                ContextoDeObjs.ExecuteStoreCommand("update TD_MODELO set IND_VISUALIZAR='N' WHERE ID_MODELO=" + ID_MODELO);
                return true;
            }
            catch (SqlException ex)
            {
                Globales.msjSql = ex.Message;
                return false;
            }
            catch (Exception)
            {
                return false;
            }
        }



        public IEnumerable<Object> listarXT_Man_Modelo_Imagen(string des_marca, string tipo_rueda)
        {
            IEnumerable<Object> lista = new List<Object>();
            try
            {
                var q = from t in ContextoDeObjs.TD_MODELO                        
                        where  t.IND_VISUALIZAR == "S" &&
                        t.DES_MARCA==des_marca && t.TIP_NUM_RUEDA==tipo_rueda
                        orderby t.DES_MODELO
                        select new
                        {
                            t.COD_MODELO,
                            t.TIP_NUM_RUEDA,
                            t.DES_MARCA,
                            t.DES_MODELO,
                            t.ID_MODELO,
                            DES_IMAGEN =((from tm in ContextoDeObjs.T_MAN_MODELO_IMAGEN
                                where
                                  tm.ID_MODELO == t.ID_MODELO
                                select new
                                {
                                    tm.DES_IMAGEN
                                }).Take(1).FirstOrDefault().DES_IMAGEN)
                        };
               lista = q.ToList();
            }
            catch 
            {
            }
            return lista;
        }

        public List<TD_MODELO> ListarModelosxMarca(int ID_MARCA) 
        {
            try
            {
                var q = from m in ContextoDeObjs.TD_MODELO
                        where m.ID_MARCA == ID_MARCA && m.TIP_NUM_RUEDA == "2R"
                        orderby m.DES_MODELO ascending
                        select m;
                return q.ToList();
            }
            catch (Exception)
            {
                return null;
            }
        }


        public IEnumerable<Object> listarXT_Man_Modelo_Imagen_likeMarca(string des_marca,string tipo_rueda)
        {
            IEnumerable<Object> lista = new List<Object>();
            try
            {
                var q = from t in ContextoDeObjs.TD_MODELO
                        from tmm in ContextoDeObjs.T_MAN_MODELO_IMAGEN
                        where
                         t.IND_VISUALIZAR == "S" &&
                        t.ID_MODELO == tmm.ID_MODELO && t.DES_MARCA==des_marca && t.TIP_NUM_RUEDA==tipo_rueda
                        select new
                        {
                            t.ID_MODELO,
                            t.DES_MARCA,
                            t.ID_MARCA,
                            t.TIP_NUM_RUEDA,
                            t.DES_NUM_RUEDA,
                            t.DES_MODELO,
                            tmm.DES_IMAGEN
                        };

                lista = q.ToList();
            }
            catch
            {
            }
            return lista;
        }


        public List<TD_MODELO> ListarModeloxNroRuedasxMarcas(string strNroRuedas, int intIdMarca, String strvOperacion)
        {
            List<TD_MODELO> lista = new List<TD_MODELO>();
            try
            {
                var q = from c in ContextoDeObjs.TD_MODELO
                        where c.ID_MARCA == intIdMarca 
                        && c.TIP_NUM_RUEDA == strNroRuedas 
                        //&& c.IND_BAJA == 0
                        select c;
                //if (strvOperacion == "C") q = q.Where(f1 => f1.IND_VISUALIZAR == "S");
                lista = q.OrderBy(x=>x.DES_MODELO).ToList();
            }
            catch (Exception)
            {
                lista = null;
            }
            return lista;
        }

        public int? ObtenerIndBajaModelo(int intIdModelo)
        {
            int? intIndBaja;
            try
            {
                var q = from c in ContextoDeObjs.TD_MODELO
                        where c.ID_MODELO == intIdModelo
                        select new
                        {
                            c.IND_BAJA
                        };
                intIndBaja = q.ToList()[0].IND_BAJA;
            }
            catch (Exception)
            {
                intIndBaja = null;
            }
            return intIndBaja;
        }
    }
}
